FIG. 1 illustrates a prior art architecture for a networked device (100) that performs functions associated with Network Attached Storage (NAS). The device includes a plurality of virtual machines (VM) (102), a virtual switch (VS) (104), and a plurality of Network Interface Cards (NICs) (106). Each virtual machine (102) is associated with a unique (within the Local Area Network) Media Access Control (MAC) address. The virtual switch (104), which is implemented in the host operating system (108), functions to direct incoming packets (110) to the appropriate virtual machine (102) based on the MAC address in the packet header. In particular, the network interface card (106) receives the packet from the network and copies the packet to a common buffer pool (112). The virtual switch (104) then examines the packet from the common buffer pool to perform the switching function. In particular, the virtual switch categorizes packets by destination MAC address. The virtual switch then directs the packet to be copied to virtual machine memory based on the results of the categorization. If the packet is addressed to MAC address 1, then the virtual switch prompts the packet to be copied from the common buffer pool to a buffer pool reserved for use by the virtual machine having MAC address 1. If the packet is addressed to MAC address 2, then the virtual switch prompts the packet to be copied from the common buffer pool to a buffer pool reserved for use by the virtual machine having MAC address 2. If the packet is addressed to the broadcast address or a multicast address, then the virtual switch prompts the packet to be copied from the common buffer pool to the buffer pools reserved for use by all virtual machines associated with the virtual switch. If the packet is addressed to a MAC address that is not associated with a virtual machine running in the device, the virtual switch filters the packet, i.e., prompts discard of the packet from the common buffer pool.
Because the virtual switch is implemented in the operating system, the physical NICs are configured in “promiscuous mode.” In particular, the NICs are configured to receive packets addressed to all MAC addresses in order for the device to support the various MAC addresses associated with the supported virtual machines. One drawback of this compromise is that performance degrades in proportion to the number of packets received by the NICs that are not addressed to virtual machines supported by the device. While the number of packets unnecessarily received and processed by the device can be reduced by selective transmission by other network devices, the problem may still become troublesome when packet flooding occurs, such as happens following a network topology change. Further, copying packets from the common buffer to the reserved memory associated with particular virtual machines can be time consuming and costly in terms of both processor cycles and processor cache occupancy.